﻿// 3476. WERTYU.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <map>


using namespace std;
/*
https://www.acwing.com/problem/content/3479/
一种常见的键入错误是将手放到了比键盘正确位置偏右一位的位置。

这样的话，在你想键入 Q 时，实际键入的是 W，当你想键入 J时，实际键入的是 K。

现在给定一个在这种情况下，键入的错误信息，请你将其翻译为正确信息。

输入格式
输入包含多行文本，每行可能包含空格或一些可能键入的字符（如下所示）。

可能键入的字符：

第一行：234567890-=
第二行：WERTYUIOP[]
第三行：SDFGHJKL;'
第四行：XCVBNM,./
输出格式
将输入中除了空格以外的字符全部替换为正确字符后输出。

数据范围
最多不超过 100 行，每行不超过 100个字符。

输入样例：
O S, GOMR YPFSU/
输出样例：
I AM FINE TODAY.
*/
char str[200];
map<char, char> mm;
int len;

void init() {
	string str = "1234567890-=";
	for (int i = 1; i < str.size(); i++) {
		mm[str[i]] = str[i - 1];
	}
	str = "QWERTYUIOP[]";
	for (int i = 1; i < str.size(); i++) {
		mm[str[i]] = str[i - 1];
	}
	str = "ASDFGHJKL;'";
	for (int i = 1; i < str.size(); i++) {
		mm[str[i]] = str[i - 1];
	}
	str = "ZXCVBNM,./";
	for (int i = 1; i < str.size(); i++) {
		mm[str[i]] = str[i - 1];
	}
}

void solve() {
	int i = 0;
	string res;
	while (str[i] != '\r' && str[i] != '\n' && str[i] != '\0') {
		char c = str[i];
		if (str[i] != ' ') {
			c = mm[c];
		}
		res += c;
		i++;
	}
	cout << res << endl;
	return;
}

int main()
{
	init();

	while (cin.getline(str, 150)) {
		solve();
	}

	return 0;
}

 